Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

3.6K
Vistas
No puedo ejecutar mi proyecto TypeScript de Node.js TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Extensión de archivo desconocida ".ts" para /app/src/App.ts

Cuando intento iniciar mi aplicación en Heroku, obtuve el siguiente seguimiento de pila. Es solo una ts.app básica como la que ves con ts-node y nodemon. Si necesita más información, solo dígame eso porque es mi primera publicación. Estoy realmente interesado en cuál va a ser la respuesta.

 2020-05-30T00:03:12.201106+00:00 heroku[web.1]: Starting process with command `npm start` 2020-05-30T00:03:14.405285+00:00 app[web.1]: 2020-05-30T00:03:14.405303+00:00 app[web.1]: > discordtoornamentmanager@1.0.0 start /app 2020-05-30T00:03:14.405303+00:00 app[web.1]: > ts-node src/App.ts 2020-05-30T00:03:14.405304+00:00 app[web.1]: 2020-05-30T00:03:14.833655+00:00 app[web.1]: (node:23) ExperimentalWarning: The ESM module loader is experimental. 2020-05-30T00:03:14.839311+00:00 app[web.1]: TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /app/src/App.ts 2020-05-30T00:03:14.839312+00:00 app[web.1]: at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15) 2020-05-30T00:03:14.839314+00:00 app[web.1]: at Loader.getFormat (internal/modules/esm/loader.js:113:42) 2020-05-30T00:03:14.839315+00:00 app[web.1]: at Loader.getModuleJob (internal/modules/esm/loader.js:244:31) 2020-05-30T00:03:14.839315+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:97:5) 2020-05-30T00:03:14.839316+00:00 app[web.1]: at Loader.import (internal/modules/esm/loader.js:178:17) 2020-05-30T00:03:14.847801+00:00 app[web.1]: npm ERR! code ELIFECYCLE 2020-05-30T00:03:14.847998+00:00 app[web.1]: npm ERR! errno 1 2020-05-30T00:03:14.848957+00:00 app[web.1]: npm ERR! discordtoornamentmanager@1.0.0 start: `ts-node src/App.ts` 2020-05-30T00:03:14.849050+00:00 app[web.1]: npm ERR! Exit status 1 2020-05-30T00:03:14.849172+00:00 app[web.1]: npm ERR! 2020-05-30T00:03:14.849254+00:00 app[web.1]: npm ERR! Failed at the discordtoornamentmanager@1.0.0 start script. 2020-05-30T00:03:14.849337+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 2020-05-30T00:03:14.854859+00:00 app[web.1]: 2020-05-30T00:03:14.854998+00:00 app[web.1]: npm ERR! A complete log of this run can be found in: 2020-05-30T00:03:14.855069+00:00 app[web.1]: npm ERR! /app/.npm/_logs/2020-05-30T00_03_14_850Z-debug.log 2020-05-30T00:03:14.907689+00:00 heroku[web.1]: Process exited with status 1 2020-05-30T00:03:14.943718+00:00 heroku[web.1]: State changed from starting to crashed

Este es mi paquete.json

 { "name": "discordtoornamentmanager", "version": "1.0.0", "description": "", "main": "dist/app.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon -x ts-node src/App.ts", "start": "ts-node src/App.ts" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@types/node": "^14.0.5", "axios": "^0.19.2", "discord.js": "^12.2.0", "pg": "^8.2.1", "reflect-metadata": "^0.1.10", "typeorm": "0.2.25", "typescript": "^3.9.3", "nodemon": "^2.0.4", "ts-node": "8.10.1" } }

Y este es mi tsconfig

 { "compilerOptions": { "lib": [ "es6" ], "target": "es6", "module": "commonjs", "moduleResolution": "node", "outDir": "dist", "resolveJsonModule": true, "emitDecoratorMetadata": true, "esModuleInterop": true, "experimentalDecorators": true, "sourceMap": true }, "include": ["src/**/*.ts"], "exclude": ["node_modules", "**/*.spec.ts"] }
over 4 years ago · Santiago Trujillo
16 Respuestas
Responde la pregunta

0

Cambié mis importaciones de:

import blah from './modules/blah'

para

import blah from './modules.blah.js'

over 4 years ago · Santiago Trujillo Denunciar

0

Me encontré con esto si estoy importando código mecanografiado de una biblioteca de reacción pero para un script de back-end, en este caso pruebas de mocha. Está esperando archivos .ts pero creo que encuentra archivos .tsx.

En mi caso, tuve que mover algunas funciones de los archivos de reacción .tsx al código backend .ts con el que estaba trabajando.

over 4 years ago · Santiago Trujillo Denunciar

0

Estaba tratando de ejecutar archivos js y ts en el mismo paquete con "type": "module" usando la sintaxis es6 para importaciones. Siguiendo la respuesta de MysteryCommand, funcionó la instalación del paquete ts-node y la ejecución de archivos ts con node --loader ts-node/esm .

over 4 years ago · Santiago Trujillo Denunciar

0

Solución uno

  1. Eliminar "type": "module" de paquete.json si se agrega
  2. En tsconfig.json bajo la propiedad del módulo compilerOptions Set en el módulo CommonJS module: "CommonJS" y moduleResolution: "Node"

Solución dos

si el primero no funcionó, o por alguna razón tiene que mantener el module: "ESNext"

1- Agregue "type": "module" a paquete.json

2- Instalar ts-node npm i -g ts-node

3- Ve a tsconfig.json y agrega lo siguiente:

 { "compilerOptions": { "module": "ESNext", "moduleResolution": "Node", /* ... your props ... */ }, "ts-node": { "esm": true } }

4- Ejecute ts-node fileName.ts

over 4 years ago · Santiago Trujillo Denunciar

0

MARZO 2022

USANDO: Nodo 16.6.2, ts-node v 10.7.0

Lo que funcionó para mí fue tener "type": "module" en package.json y agregar

 node --experimental-specifier-resolution=node --loader ts-node/esm ./src/app.ts

tsconfig.json:

 { "compilerOptions": { "module": "ESNext", "esModuleInterop": true, "target": "ESNext", "moduleResolution": "Node", "outDir": "dist", "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "isolatedModules": false, "strict": true, "noImplicitAny": true, "useUnknownInCatchVariables": false, "inlineSourceMap": true }, "ts-node": { "esm": true }, "lib": ["esnext"] }

Créditos a @FelipePlets por la respuesta útil aquí

EDITAR Es posible que desee utilizar una opción que no esnext la siguiente, según los documentos de ts :

El valor especial de ESNext se refiere a la versión más alta que admite su versión de TypeScript. Esta configuración debe usarse con precaución, ya que no significa lo mismo entre diferentes versiones de TypeScript y puede hacer que las actualizaciones sean menos predecibles.

over 4 years ago · Santiago Trujillo Denunciar

0

cambiando mi

 "moduleResolution": "node",

para

 "moduleResolution": "Node",

en package.json resolvió esto por mí

over 4 years ago · Santiago Trujillo Denunciar

0

Actualización: gracias a algunos mantenedores, el paquete web ahora documenta oficialmente una solución funcional. Solo eche un vistazo a la documentación oficial del paquete web .

La segunda solución es similar a otras respuestas aquí y funciona perfectamente bien en mi caso.

over 4 years ago · Santiago Trujillo Denunciar

0

En su paquete.json {Módulo: commonJS}, y tsconfig.json {módulo: commonJS}, a ts-node youname.ts

over 4 years ago · Santiago Trujillo Denunciar

0

Agregue esto a tsconfig.json

 { /* ... your props ... */ "ts-node": { "compilerOptions": { "module": "CommonJS" } } }
over 4 years ago · Santiago Trujillo Denunciar

0

antes de esto:

node --loader ts-node/esm ./my-script.ts

Tuve que actualizar ssri

npm update ssri --depth 5

over 4 years ago · Santiago Trujillo Denunciar

0

Me encontré con este problema por primera vez probablemente hace más de un año, y ts-node aún no lo ha solucionado. Ninguna de las soluciones anteriores funcionó para mí, y aparentemente probé todo.

Simplemente recurrí a usar tsc --outDir out file.ts y luego ejecutar el archivo normalmente con node out/file.js , y luego agregarlo out .gitignore .

El pensamiento detrás ts-node es maravilloso, realmente apesta cuando no puede manejar ejemplos aparentemente sencillos como este. Disculpas, la solución no usa ts-node, pero no pude hacer que funcionara.

over 4 years ago · Santiago Trujillo Denunciar

0

No estoy seguro de si esto ayudará a alguien, pero lo arreglé poniendo esto al principio:

 #!/usr/bin/env node
over 4 years ago · Santiago Trujillo Denunciar

0

Eliminando "type": "module" de package.json y agregando:

 "compilerOptions": { "module": "CommonJS" },

En tsconfig.json me arregló esto.

over 4 years ago · Santiago Trujillo Denunciar

0

Seguí los consejos dados aquí. También tuve que desinstalar lodash-es e instalar lodash en su lugar para que funcionara.

over 4 years ago · Santiago Trujillo Denunciar

0

utilizar

 node --loader ts-node/esm ./my-script.ts

en lugar de

 ts-node ./my-script.ts
over 4 years ago · Santiago Trujillo Denunciar

0

Eliminar "type": "module" de paquete.json


https://github.com/TypeStrong/ts-node/issues/935


Si no desea eliminar "type": "module" (por ejemplo, si está usando declaraciones de import en su .ts que permite la inferencia de tipos de módulos), puede usar la siguiente opción en tsconfig.json :

 { "compilerOptions": { "esModuleInterop": true, } }

Y luego puede iniciar el servidor con la configuración usando ts-node .

Instalar en pc:

 npm install -g ts-node

Correr:

 ts-node my_server.ts
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda